home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / cenvid / gif2desc.bat < prev    next >
Encoding:
DOS Batch File  |  1995-04-07  |  1.9 KB  |  88 lines

  1. @echo off
  2. ::gif2desc 0.1, Copyright 1993 Richard Hempsey
  3. ::
  4. :: a batch file/cenvi script that extracts the resolution and number of
  5. :: colors in a GIF file, and puts it into a 4DOS descript.ion.
  6.  
  7. CEnviD gif2desc.bat %1 %2
  8. GOTO CENVI_EXIT
  9.  
  10. p2[0]=1;
  11. for(i=1;i<8;i++) p2[i]=p2[i-1]*2;
  12.  
  13. main(argc,argv)
  14. {
  15.     if(argc>2) {
  16.         fprintf(stderr,"Usage: gif2desc [filespec]\n");
  17.         exit(1);
  18.     }
  19.  
  20.     if(argc==1)
  21.         filespec="*.gif";
  22.     else
  23.         filespec=argv[1];
  24.  
  25.     temp=SplitFileName(filespec);
  26.  
  27.     descfile=temp.dir;
  28.     strcat(descfile,"descript.ion");
  29.  
  30.     df=fopen(descfile,"w");
  31.     if(df==NULL) {
  32.         fprintf(stderr,"error: unable to open %s for writing\n",descfile);
  33.         exit(1);
  34.     }
  35.  
  36.     files=Directory(filespec,False,~FATTR_SUBDIR);
  37.     if(files==NULL) {
  38.         fprintf(stderr,"error: no files matching filespec %s\n",filespec);
  39.         exit(1);
  40.     }
  41.     numfiles=1+GetArraySpan(files);
  42.  
  43.     for(i=0;i<numfiles;i++)
  44.         ProcessFile(files[i].name,df);
  45.  
  46.     fclose(df);
  47.  
  48.     exit(0);
  49. }
  50.  
  51. ProcessFile(filename,desc)
  52. {
  53.     gf=fopen(filename,"rb");
  54.     if(gf==NULL) {
  55.         fprintf(stderr,"error: could not open %s for reading.\n",filename);
  56.         return;
  57.     }
  58.  
  59.     temp=SplitFileName(filename);
  60.     name=temp.name;
  61.     strcat(name,temp.ext);
  62.  
  63.     fread(gif_id,6,gf);
  64.     if(strcmp(gif_id,"GIF89a")==0)
  65.         fprintf(desc,"%s g",name);
  66.     else
  67.         if(strcmp(gif_id,"GIF87a")!=0) {
  68.             fclose(gf);
  69.             return;
  70.         }
  71.         else
  72.             fprintf(desc,"%s ",name);
  73.  
  74.     fread(ww,UWORD16,gf);
  75.     fread(hh,UWORD16,gf);
  76.     fread(bitfield,UWORD8,gf);
  77.     colors=p2[(bitfield&0x07)+1];
  78.  
  79.     fprintf(desc,"%04dx%04dx%03d\n",ww,hh,colors);
  80.  
  81.     fclose(gf);
  82. }
  83.  
  84. :CENVI_EXIT
  85. iff %#==1 then ^ attrib +h %@path[%@full[%1]]descript.ion /q >&nul ^ *quit ^ endiff
  86. iff %#==0 then ^ attrib +h descript.ion /q >&nul ^ *quit ^ endiff
  87.  
  88.